﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace MergulhoGrafo.QuadriParticao
{
    public class ParticaoB : AbstractParticao
    {
        public ParticaoB(GrafoRetangulo grafoRetangulo, ParticaoA particaoA)
        {
            this.EncontrarB(grafoRetangulo, particaoA);
        }

        private void EncontrarB(GrafoRetangulo grafoRetangulo, ParticaoA particaoA)
        {
            for (int i = 1; i <= grafoRetangulo.NumeroFaces; i++)
            {
                List<Retangulo> resultado =
                    (from gr in grafoRetangulo.Retangulos where
                         !particaoA.Retangulos.Contains(gr.numeroRef) &&
                         (gr.Face1 == i || gr.Face2 == i) &&
                         !this.Retangulos.Contains(gr.numeroRef)
                     select gr).ToList();

                if (resultado.Count == 1)
                {
                    this.Retangulos.Add(resultado[0].numeroRef);
                }
            }
        }
    }
}
